home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / NRPAS13 / TRED2.DEM < prev    next >
Text File  |  1991-04-29  |  3KB  |  92 lines

  1. PROGRAM d11r3(input,output);
  2. (* driver for routine TRED2 *)
  3. CONST
  4.    np=10;
  5. TYPE
  6.    glnp = ARRAY [1..np] OF real;
  7.    glnpnp = ARRAY [1..np,1..np] OF real;
  8. VAR
  9.    i,j,k,l,m : integer;
  10.    a,c,f : glnpnp;
  11.    d,e : glnp;
  12.  
  13. (*$I MODFILE.PAS *)
  14. (*$I TRED2.PAS *)
  15.  
  16. BEGIN
  17.    c[1,1] := 5.0; c[1,2] := 4.0; c[1,3] := 3.0;
  18.    c[1,4] := 2.0; c[1,5] := 1.0; c[1,6] := 0.0;
  19.    c[1,7] := -1.0; c[1,8] := -2.0; c[1,9] := -3.0;
  20.    c[1,10] := -4.0;
  21.    c[2,1] := 4.0; c[2,2] := 5.0; c[2,3] := 4.0;
  22.    c[2,4] := 3.0; c[2,5] := 2.0; c[2,6] := 1.0;
  23.    c[2,7] := 0.0; c[2,8] := -1.0; c[2,9] := -2.0;
  24.    c[2,10] := -3.0;
  25.    c[3,1] := 3.0; c[3,2] := 4.0; c[3,3] := 5.0;
  26.    c[3,4] := 4.0; c[3,5] := 3.0; c[3,6] := 2.0;
  27.    c[3,7] := 1.0; c[3,8] := 0.0; c[3,9] := -1.0;
  28.    c[3,10] := -2.0;
  29.    c[4,1] := 2.0; c[4,2] := 3.0; c[4,3] := 4.0;
  30.    c[4,4] := 5.0; c[4,5] := 4.0; c[4,6] := 3.0;
  31.    c[4,7] := 2.0; c[4,8] := 1.0; c[4,9] := 0.0;
  32.    c[4,10] := -1.0;
  33.    c[5,1] := 1.0; c[5,2] := 2.0; c[5,3] := 3.0;
  34.    c[5,4] := 4.0; c[5,5] := 5.0; c[5,6] := 4.0;
  35.    c[5,7] := 3.0; c[5,8] := 2.0; c[5,9] := 1.0;
  36.    c[5,10] := 0.0;
  37.    c[6,1] := 0.0; c[6,2] := 1.0; c[6,3] := 2.0;
  38.    c[6,4] := 3.0; c[6,5] := 4.0; c[6,6] := 5.0;
  39.    c[6,7] := 4.0; c[6,8] := 3.0; c[6,9] := 2.0;
  40.    c[6,10] := 1.0;
  41.    c[7,1] := -1.0; c[7,2] := 0.0; c[7,3] := 1.0;
  42.    c[7,4] := 2.0; c[7,5] := 3.0; c[7,6] := 4.0;
  43.    c[7,7] := 5.0; c[7,8] := 4.0; c[7,9] := 3.0;
  44.    c[7,10] := 2.0;
  45.    c[8,1] := -2.0; c[8,2] := -1.0; c[8,3] := 0.0;
  46.    c[8,4] := 1.0; c[8,5] := 2.0; c[8,6] := 3.0;
  47.    c[8,7] := 4.0; c[8,8] := 5.0; c[8,9] := 4.0;
  48.    c[8,10] := 3.0;
  49.    c[9,1] := -3.0; c[9,2] := -2.0; c[9,3] := -1.0;
  50.    c[9,4] := 0.0; c[9,5] := 1.0; c[9,6] := 2.0;
  51.    c[9,7] := 3.0; c[9,8] := 4.0; c[9,9] := 5.0;
  52.    c[9,10] := 4.0;
  53.    c[10,1] := -4.0; c[10,2] := -3.0; c[10,3] := -2.0;
  54.    c[10,4] := -1.0; c[10,5] := 0.0; c[10,6] := 1.0;
  55.    c[10,7] := 2.0; c[10,8] := 3.0; c[10,9] := 4.0;
  56.    c[10,10] := 5.0;
  57.    FOR i := 1 to np DO BEGIN
  58.       FOR j := 1 to np DO BEGIN
  59.          a[i,j] := c[i,j]
  60.       END
  61.    END;
  62.    tred2(a,np,d,e);
  63.    writeln('diagonal elements');
  64.    FOR i := 1 to np DO BEGIN
  65.       write(d[i]:12:6);
  66.       IF ((i MOD 5) = 0) THEN writeln
  67.    END;
  68.    writeln('off-diagonal elements');
  69.    FOR i := 2 to np DO BEGIN
  70.       write(e[i]:12:6);
  71.       IF ((i MOD 5) = 0) THEN writeln
  72.    END;
  73. (* check transformation matrix *)
  74.    FOR j := 1 to np DO BEGIN
  75.       FOR k := 1 to np DO BEGIN
  76.       f[j,k] := 0.0;
  77.          FOR l := 1 to np DO BEGIN
  78.             FOR m := 1 to np DO BEGIN
  79.                f[j,k] := f[j,k]
  80.                +a[l,j]*c[l,m]*a[m,k]
  81.             END
  82.          END
  83.       END
  84.    END;
  85. (* how does it look? *)
  86.    writeln('tridiagonal matrix');
  87.    FOR i := 1 to np DO BEGIN
  88.       FOR j := 1 to np DO write(f[i,j]:7:2);
  89.       writeln
  90.    END
  91. END.
  92.